Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in the present disclosure and are not admitted to be prior art by inclusion in this section.
There are many applications in which image processing techniques are employed. For example, image processing techniques are useful in certain printing, photographic, and video applications, e.g., to enhance or otherwise transform images. Some examples of image transformations include adjusting image characteristics such as contrast, brightness, gamma, hue, saturation, tint, etc.; image deskewing or other rotation; red-eye removal; image recognition, e.g., character recognition, face detection, scene detection, etc.; image sharpening or softening; image interpolation or extrapolation; and image upscaling or image downscaling.
While software based image processing and hardware based image processing have been previously employed, disadvantages are associated with both software based image processing and hardware based image processing. For example, software based image processing generally relies upon resources of a host device such as a general purpose computer and is typically slower than hardware based image processing. In contrast, hardware based image processing is generally faster than software based image processing. However, typical hardware based image processors are typically inflexible. For example, hardware based image processors are typically designed and manufactured for a custom instruction set that is designed to perform only limited types of image transformations. Further, adding support for additional types of image transformation generally necessitates significant hardware redesign.